﻿using System;

namespace Helper
{
    /// <summary>
    /// 숫자관련 도우미 클래스
    /// </summary>
    public class NumberHelper
    {
        #region /// 랜덤 함수

        /// <summary>
        /// 지정된 범위 내의 난수를 반환합니다.
        /// </summary>
        /// <param name="seed">의사(peudo) 난수 시퀀스의 시작 값을 계산하는 데 사용되는 숫자입니다. 음수를 지정하면 이 숫자의 절대값이 사용됩니다.</param>
        /// <param name="minValue">반환되는 난수의 하한(포함)입니다.</param>
        /// <param name="maxValue">반환되는 난수의 상한(제외)입니다. maxValue는 minValue보다 크거나 같아야합니다.</param>
        /// <returns>지정된 범위 내의 난수를 반환합니다.</returns>
        public int GetRandom(int seed, int minValue, int maxValue)
        {
            Random num = new Random(seed);
            return num.Next(minValue, maxValue);
        }
        /// <summary>
        /// 지정된 범위 내의 난수를 반환합니다.
        /// </summary>
        /// <param name="minValue">반환되는 난수의 하한(포함)입니다.</param>
        /// <param name="maxValue">반환되는 난수의 상한(제외)입니다. maxValue는 minValue보다 크거나 같아야합니다.</param>
        /// <returns>지정된 범위 내의 난수를 반환합니다.</returns>
        public int GetRandom(int minValue, int maxValue)
        {
            Random num = new Random();
            return num.Next(minValue, maxValue);
        }
        /// <summary>
        /// 지정된 최대값보다 작은 음수가 아닌 난수를 반환합니다.
        /// </summary>
        /// <param name="maxValue">생성되는 난수의 상한(제외)입니다. maxValue는 0보다 크거나 같아야 합니다.</param>
        /// <returns>0보다 크거나 같고 maxValue보다 작은 부호 있는 32비트 정수이므로 반환 값의 범위에는 0이 포함되지만 maxValue는 포함되지 않습니다.</returns>
        public int GetRandom(int maxValue)
        {
            Random num = new Random();
            return num.Next(maxValue);
        }
        /// <summary>
        /// 0.0과 1.0 사이의 난수를 반환합니다. 
        /// </summary>
        /// <returns>0.0보다 크거나 같고 1.0보다 작은 배정밀도 부동 소수점 숫자입니다.</returns>
        public double GetRandom()
        {
            Random num = new Random();
            return num.NextDouble();
        }

        #endregion
    }
}